---
title: Deploying SSR
desc: (@quasar/app-webpack) How to publish a Quasar server-side rendered app.
---
When deploying as a SPA or PWA, the distributables folder that gets generated by Quasar CLI can be served by a static webserver. However, this is not the case with an SSR (Server-side Render) build. Your distributables, in this case, contain your production webserver too -- which can be tweaked from `/src-ssr`.

By default, the SSR distributables use [Express](https://expressjs.com/), but you can replace it with your webserver of choice.

## Serverless <q-badge label="@quasar/app-webpack v3.2+" />

If you are deploying to a Serverless service, then please read about [SSR Production Export](/quasar-cli-webpack/developing-ssr/ssr-production-export) on how to prepare for it.

## The Distributables Folder
After building your app on SSR mode (`$ quasar build -m ssr`) the folder that gets generated contains a standalone webserver tweaked for serving with SSR.

You'll notice that it contains a `package.json` file of its own. It has an npm script defined, called "start":

```js
"scripts": {
  "start": "node index.js"
}
```

So what you need to do when deploying is to copy this distributables folder on your server, yarn/npm install the dependencies inside it, then run `$ yarn start`. This boots up the webserver and starts listening for connections.

::: tip
The distributables folder generated after building your app is standalone. It does NOT require the rest of your project folder to work and it does NOT depend on `@quasar/cli` being installed.
:::

## Enhancing Performance
By default, the webserver runs on only one of the available server's cores. What you could do is make it use all cores. There is a solution for this: [PM2](http://pm2.keymetrics.io/).

After installing PM2 on your server, your npm start script can look like this instead:
```js
"scripts": {
  "start": "pm2 start index.js"
}
```

## Deploying with Cleavr
You can use [Cleavr](https://cleavr.io) to deploy Quasar SSR apps to several popular VPS providers. Cleavr will automatically set up PM2 with cluster mode enabled for your app.

Add a new **NodeJS SSR** site to Cleavr and then configure the web app settings with the following:

- **Entry point:** index.js
- **Build command:** npx quasar build --mode ssr
- **Artifact path:** dist/ssr
